useEffect(副作用處理)
副作(side-effect)是什麼意思?是做什麼用的呀?
例如我們在 fetch 資料、訂閱事件、改變 DOM,這些在 render 期間無法完成,卻又會影響其他 component,
稱為是「side effect」。
useEffect使用方法useEffect(callback, array)
-> callback:回調函式
-> array:使用陣列(array)來控制或執行回調函式
陣列如果是空值,在 render 之後只會執行一次,無法再次觸發
陣列如果有值,會在該 array 發生改變後執行
陣列如果省略,每次渲染時都會執行
import React, { useState, useEffect } from "react";
function Click() {
const [count, setCount] = useState(0);
useEffect(() => {
//更新title,預設會在每次 render 之後都一定會執行
document.title = `You clicked ${count} times`;
});
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>Click me</button>
</div>
);
}
export default Click;
當我們使用 useEffect
的時候,這代表我們告訴 React 在 component render 之後需要做一些事情,而 React 會在 render 之後執行我們傳入的 function。